home *** CD-ROM | disk | FTP | other *** search
-
-
- These notes correspond to *pcl-system-date* 3/19/87 prime.
-
- This release runs in:
- ExCL
- Lucid
- Symbolics Common Lisp (Genera)
- Vaxlisp (2.0)
- Xerox Common Lisp (Lyric Release)
-
- CMU Lisp (nee Spice) and KCL should be working soon, I will announce
- another release at that time. I figured it was better to get some
- people beating on it as soon as possibl.
-
- Xerox Lisp users should FTP all the source files from /pub/pcl/ as well
- as all the dfasl files from /pub/pcl/xerox/. Included in the xerox
- specific directory is a file called PCL-ENV, which provides some simple
- environment support for using PCL in Xerox Lisp.
-
-
-
- Following is a description of some of the things that are different in
- this release of PCL. This list isn't in any particular order. There
- are a number of incompatible changes in this release, please read the
- whole thing carefully.
-
- As usual, please enjoy, and send bug-reports, questions etc. to
- CommonLoops@Xerox.com.
-
- ***
- The single most significant change is that discriminator-objects with
- corresponding discriminating functions have been replaced by generic
- function objects. What does this mean?? Well, in previous releases of
- PCL, if you did:
-
- (defmethod foo ((x class)) 'class)
- (defmethod foo ((x method)) 'method)
-
- Then (discriminator-named 'foo) returned a discriminator object which
- had both of these methods defined on it. (symbol-function 'foo)
- returned a discriminating function, which (discriminator-named 'foo) had
- put in foo's function cell.
-
- In this release of PCL, the above defmethod's put a generic-function
- object in foo's function cell. This generic-function object is a
- combination of the discriminator object and discriminating function of
- the previous releases of PCL. This generic-function object is
- funcallable, funcalling it causes the appropriate method to be looked up
- and called. This generic function object has accessors which return the
- methods defined on the generic function. This generic function object
- is mutable. It is possible to add and remove methods from it.
-
- (defmethod foo ((x class)) 'class)
- (defmethod foo ((x method)) 'method)
-
- (generic-function-methods #'foo)
- (#<Method FOO (METHOD) 3434> #<Method FOO (CLASS) 3245>)
-
- (foo (make 'class)) ==> 'class
- (foo (make 'method)) ==> 'method
-
- (remove-method #'foo (car (generic-function-methods #'foo)))
-
- (foo (make 'class)) ==> 'class
- (foo (make 'method)) ==> no matching method error
-
-
- Note that as part of this change, the name of any function, generic
- function or class which included the string "DISCRIMINATOR" has changed.
- The name changes that happened were:
- The class essential-discriminator was renamed to generic-function,
- The class basic-discriminator and the class discrimiantor were
- combined and renamed to standard-generic-function.
-
- If you went through your code and made the following name changes, you
- would probably win, (this is what I did to PCL and it worked).
-
- essential-discriminator ==> generic-function
- basic-discriminator ==> standard-generic-function
- discriminator
- (when it appears as a specializer)
- ==> standard-generic-function
- discriminator
- (when it appears as part of a variable name or something)
- ==> generic-function
-
- ***
- In most Lisp implementations, method lookup is at least twice as fast as
- it was in the previous release.
-
- ***
- The compiler isn't called when PCL is loaded anymore. In a future
- release, the compiler will also not be called when any other method
- definitions are loaded. This is part of an effort to get PCL to a state
- where the compiler will never be needed when compiled files are loaded.
-
- ***
- PCL now has a mechanism for naming the generic-function's and method
- functions defined by defmethod. This means that in ports of PCL which
- take advantage of this mechanism, you will see useful function names in
- the debugger rather than the useless gensym names that have been in the
- past few releases.
-
- ***
- Compiled files containing defmethod forms should be smaller and load
- faster.
-
- ***
- Many of the files in the system have been renamed. More files will be
- renamed in upcoming releases.
-
- ***
- An important part of the bootstrapping code has been re-written. The
- remainder of this code (the BRAID1 and BRAID2 files) will be re-written
- sometime soon.
-
- The changes made to bootstrapping in this release were done to make
- early methods more understandable, and as part of implementing generic
- function objects. Also, most users should find that PCL loads in less
- time than it did before.
-
- The changes which will be made to bootstrapping in a future release will
- make understanding the "Braid" stuff easier, and will make it possible
- to implement slot-description objects as described in the CURRENT DRAFT
- of the Common Lisp Object System Chapter 3.
-
- ***
- The defsys file has been re-written AGAIN. This shouldn't affect users
- since there are still the old familiar variables *pcl-pathname-defaults*
- and *pathname-extensions*.
-
- ***
- The specialized foo-notes files are all gone. Most of them were
- hopelessly out of date, and installing pcl is now the same operation for
- any Lisp. In particular, note that in Vaxlisp, it is no longer
- necessary to push lisp:vaxlisp on the *features* list.
-
-